//package light.network.client;
//
//import java.io.IOException;
//import java.net.InetSocketAddress;
//import java.nio.ByteBuffer;
//import java.nio.channels.SocketChannel;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import light.network.PackProtocal;
//import light.network.object.PackObject;
//
//public class TcpClient {
//	
//	private static Logger logger = LoggerFactory.getLogger(TcpClient.class);
//
//	SocketChannel client;
//	ByteBuffer buffer = ByteBuffer.allocate(1024*1024);
//	
//	public TcpClient() throws IOException
//	{
//		client = SocketChannel.open();
//	}
//	public TcpClient(String rmHost, int rmPort) throws IOException
//	{
//		client = SocketChannel.open(new InetSocketAddress(rmHost, rmPort));
//	}
//	
//	public void connect(String rmHost, int rmPort) throws IOException
//	{
//		client.connect(new InetSocketAddress(rmHost, rmPort));
//	}
//	
//	/**
//	 * 读取一个数据包，返回的数据包仅在下一次读取操作之前有效
//	 * @return
//	 * @throws IOException
//	 */
//	public ByteBuffer readBuffer() throws IOException
//	{
//		buffer.clear();
//		client.read(buffer);
//		
//		int recvLen = buffer.position();
//		buffer.position(0);
//		int packLen = PackProtocal.getPackLength(buffer)+8;
//		if(packLen<0)
//		{
//			logger.warn("Receive a wrong format package, unsupported package length.");
//			return null;
//		}
//		while(recvLen<packLen)
//		{
//			buffer.position(recvLen);
//			client.read(buffer);
//			recvLen = buffer.position();
//		}
//		buffer.position(8);
//		buffer.limit(8+packLen);
//		return buffer;
//	}
//	
//	public PackObject readObject() throws IOException
//	{
//		ByteBuffer buf = readBuffer();
//		return PackProtocal.wrap(buf);
//	}
//	
//	public void send(PackObject data) throws IOException
//	{
//		client.write(PackProtocal.unwrapUDP(data, buffer));
//	}
//	
//	/**
//	 * 发送一个请求，并等待响应
//	 * @param data
//	 * @return
//	 * @throws IOException
//	 */
//	public PackObject request(PackObject data) throws IOException
//	{
//		client.write(PackProtocal.unwrap(data, buffer));
//		return readObject();
//	}
//
//	public void send(byte[] data, int offset, int len) throws IOException
//	{
//		client.write(ByteBuffer.wrap(data, offset, len));
//	}
//	public void send(ByteBuffer buf) throws IOException
//	{
//		client.write(buf);
//	}
//	
//	public void sendBuffer() throws IOException
//	{
//		client.write(buffer);
//	}
//	
//	public ByteBuffer prepareBuffer()
//	{
//		return buffer;
//	}
//
//	public static void main(String[] args) throws Exception {
//
//		TcpClient c = new TcpClient();
//		c.connect("localhost", 10606);
//		//c.send("Ruby");
////		ByteBuffer buf = c.readBuffer();
//
//		PackObject req = new PackObject();
//		req.getHeader().put("action", "login");
//		req.getHeader().put("user", "Ruby");
//		req.getHeader().put("psw", "123");
//		c.send(req);
//		
//		PackObject to = c.readObject();
//		System.out.println(to.getHeader());
//
//	}
//
//}
